home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
et
/
et3_0-a1.lha
/
et3
/
src
/
Types.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-07
|
4KB
|
178 lines
#ifndef Types_First
#ifdef __GNUG__
//pragma once
#pragma interface
#endif
#define Types_First
//---- configuration -----------------------------------------------------------
#if defined(__GNUG__) || defined(__STDC__)
#define ANSICPP
#endif
//--- cpp ----------------------------------------------------------------------
#ifdef ANSICPP
// symbol concatenation operator
# define _NAME1_(name) name
# define _NAME2_(name1,name2) name1##name2
# define _NAME3_(name1,name2,name3) name1##name2##name3
// stringizing
# define _QUOTE_(name) #name
#else
# define _NAME1_(name) name
# define _NAME2_(name1,name2) _NAME1_(name1)name2
# define _NAME3_(name1,name2,name3) _NAME2_(name1,name2)name3
# define _QUOTE_(name) "name"
#endif
//---- name space control ------------------------------------------------------
// the following includes automatically prefixes ET++ class names with ET_
// remove the comment to enable it automatic prefixing
// MAKEDEP is defined by etmakedep in order to speed up "make depend"
#ifndef MAKEDEP
#include "ET_Begin.h"
#endif
//---- constants ---------------------------------------------------------------
#ifndef NULL
#define NULL 0
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
const int cMaxInt = 2147483647;
const int cMaxShort = 32767;
//---- types -------------------------------------------------------------------
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
typedef unsigned char byte;
typedef u_int bool;
typedef void (*VoidFunc)(...);
typedef int (*IntFunc)(...);
typedef void* (*VoidPtrFunc)(...);
enum HighlightState { Off, On };
enum Direction { eHor, eVert };
//--- stdarg.h -----------------------------------------------------------------
#include <stdarg.h>
#if defined(sparc) && !defined(__GNUG__) && !defined(__CC_SUN21__)
# define va_(arg) __builtin_va_alist
#else
# define va_(arg) arg
#endif
//---- misc --------------------------------------------------------------------
#ifdef __GNUG__
# define SafeDelete(p) { if (p) { delete p; p= 0; } }
# define TYPEOF(x) (typeof(*x))0
#else
# define SafeDelete(p) { delete p; p= 0; }
# define TYPEOF(x) *x
#endif
#define Enum(x) (*((int*)&x))
#define Bool(x) Enum(x)
//--- bit manipulation ---------------------------------------------------------
#define BIT(n) (1 << (n))
inline int SETBIT(int &n, int i)
{
return n|= BIT(i);
}
inline int CLRBIT(int &n, int i)
{
return n&= ~BIT(i);
}
inline bool TESTBIT(int n, int i)
{
return (bool) ((n & BIT(i)) != 0);
}
//---- ONEXIT ------------------------------------------------------------------
#define _ONEXIT(uniquename) \
class uniquename { \
char dummy; \
public: \
uniquename() {} \
~uniquename(); \
}; \
static uniquename _on_exit; \
uniquename::~uniquename()
#define ONEXIT(name) _ONEXIT(_NAME2_(_OnExit_,name))
//---- -------------------------------------------------------------------------
#define T_SIM 1
#define T_PTR 2
#define T_VEC 4
#define T_ARR 8
#define T_STR 16
#define T_PTR2 32
#define SimpleMetaDef(name) \
extern class Class *_NAME2_(__isa__,name); \
inline class Class *_Type(const name*) \
{ return _NAME2_(__isa__,name); }
SimpleMetaDef(char);
SimpleMetaDef(int);
SimpleMetaDef(short);
SimpleMetaDef(long);
SimpleMetaDef(float);
SimpleMetaDef(double);
SimpleMetaDef(byte);
SimpleMetaDef(u_short);
SimpleMetaDef(u_int);
SimpleMetaDef(u_long);
//---- dummy classes for formatting booleans and flags
class _flags { char dummy; };
class _bool { char dummy; };
class _enum { char dummy; };
SimpleMetaDef(_flags);
SimpleMetaDef(_bool);
SimpleMetaDef(_enum);
#define TX(in) TC(in,_flags)
#define TB(in) TC(in,_bool)
#define TE(in) TC(in,_enum)
#include <stddef.h>
#ifndef FILE
#include <stdio.h>
#endif
#endif